package com.power.flowable.api;

import com.plf.common.domain.ResponseDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


@FeignClient(value = "sfflow-svr", contextId = "sfflow-svr", path = "/sfflow-svr")
@RestController
public interface ITable_MetaFeign {

	/**
	 *根据datasourceid批量查询表名和说明
	 * @param datasourceid 数据源id
	 * @return
	 */
	@PostMapping("/ha_table/findTableList")
	ResponseDTO findTableList(@RequestParam Integer datasourceid);

	/**
	 * 根据数据源配置, 批量查询表字段的注释和类型
	 * @param datasourceid 数据源id
	 * @param tableNameList 表名集合
	 * @return
	 * @throws Exception
	 */
	@PostMapping("/ha_table/findTableFieldListByDataSourceId")
	ResponseDTO findTableFieldListByDataSourceId(@RequestParam Integer datasourceid, @RequestBody List<String> tableNameList);

	/**
	 *根据formid批量查询表字段的注释和类型
	 * @param formid 流程表单定义id
	 * @return
	 */
	@PostMapping("/ha_table/findTableFieldList")
	ResponseDTO findTableFieldList(@RequestParam String formid);

	/**
	 * 根据数据库名称, 查询所有表名和注释
	 * @param database 数据库的名称
	 * @return [{TABLE_NAME, notes}]
	 */
	@PostMapping("/ha_table/findAll")
	ResponseDTO findAll(@RequestParam String database);


	/**
	 * 根据数据库名称, 查询指定表下字段的注释和类型
	 * @param database  数据库名称
	 * @param tableName 表名称
	 * @return
	 */
	@PostMapping("/ha_table/findTable")
	ResponseDTO findTable(@RequestParam String database, @RequestParam String tableName);
}
